package com.justnow.offer;

import java.util.*;

/**
 * @author justnow
 * Created on 2020-09-06
 * Description
 *
 * 时间限制： 3000MS
 * 内存限制： 589824KB
 * 题目描述：
 * 一个二维数组M,N中存放的是乱序的自然数,求不在数组中出现的最小自然数. int findMin(int[][] arr)
 *
 *
 *
 * 输入描述
 * 一个二维自然数组,第一行为行数，第二行为列数，后续每行代表二维数组的元素，元素之间以空格隔开
 *
 * 输出描述
 * 打印出不在该数组中出现的最小的自然数。
 *
 *
 * 样例输入
 * 2
 * 3
 * 3 1 4
 * 5 8 10
 * 样例输出
 * 2
 */
public class XhsSolution02 {
    public static int findMin(int[][] arr) {

        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                list.add(arr[i][j]);
            }
        }
        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });

        int small = list.get(0);
        int big = list.get(list.size() - 1);
        int result = 0;
        if (small > 1) {
            return 1;
        }

        for (int i = small; i <= big; i++) {
            if (!list.contains(i)) {
                result = i;
                break;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        int[][] arr = {
                {3, 1, 4},
                {5, 8, 10}
        };
        int min = findMin(arr);
        System.out.println(min);
    }
}
